This invention relates to logic circuits and in particular to an improved Muller C-element.
Muller C-elements are common in asynchronous systems. See, for example, Sutherland, xe2x80x9cMicropipelines,xe2x80x9d Communications of the ACM, June 1989, which describes some operations and uses of Muller-C elements. A Muller C-element is often included in completion detectors for asynchronous systems and in asynchronous pipelines. In many circuits and systems, the overall speed of the circuit or system is dependent on the speed of the Muller C-elements that are part of the circuit or system. Because such circuits and systems are often designed for high-speed control systems, improving the speed of the Muller C-elements will often greatly improve the utility of the circuit or system. High speed control systems make possible high performance processors, communication buffers and so forth. For example, some asynchronous control systems might operate with as few as four gate delays per data element, whereas today""s high performance synchronous systems typically operate no faster than ten or twelve gate delays per data element, to leave time for data processing steps.
In the simplest form of a Muller C-element, its output signals an event when an event is received at all of its inputs. In a specific Muller C-element, for example, events might be represented as transitions from a logical LO to a logical HI. Logical LO and HI might refer to a lower voltage and a higher voltage, respectively, but might instead be vice versa.
The speed of a Muller C-elements is limited by the number of gates that a transition must pass through, so that is a consideration in designing a Muller C-element. Another consideration is whether the element will draw large currents (xe2x80x9ccrossover currentsxe2x80x9d) between the rails, as that makes the circuit inefficient and crossover currents introduce delay. It is therefore desirable to have a Muller C-element with faster responses to events and that waste less energy.
U.S. Pat. No. 5,638,009 issued to Sutherland et al. (hereinafter xe2x80x9cthe Sutherland patentxe2x80x9d) shows the use of three-wire encoding referred to as xe2x80x9cscrew logicxe2x80x9d, but in some applications other than three-wire encoding is preferred. U.S. Pat. No. 6,281,707 (U.S. application Ser. No. 09/401,747, filed Sep. 23, 1999 and entitled xe2x80x9cTwo-stage Muller C-Elementxe2x80x9d) describes a two-input Muller C-element.
This invention provides an improved Muller C-element. In one aspect of the invention, a Muller C-element is a xe2x80x9cone-hotxe2x80x9d Muller C-element that uses 1-2 fork where the one-stage branch of the fork is associated with the transition that carries event information. In a specific embodiment, the branch that carries event information uses N-type transistors to effect the transition.
In another aspect of the invention, control circuits comprising strings of one-hot Muller C-elements are used to provide asynchronous control.